Computers are increasingly becoming interconnected because users desire to access information stored at remote locations. This interconnection gives unauthorized persons the opportunity to access computers that are thousands of miles away. This unauthorized access may take the form of potentially destructive code, often called computer viruses, worms, or Trojan horses. One way that this destructive code can attack a computer is by altering pointers within the computer, which the destructive code may then use to access or alter the contents of critical system data or resources.
A pointer is a storage location in computer memory that contains the address of, or points to, another storage location. The concept of pointers may be understood by referring to FIG. 1, which illustrates a block diagram of typical pointers in memory 100. Pointer 101 is at storage location having an address of &A within computer memory and contains &B, which is the address of another storage location, which contains a target 110. Thus, the pointer 101 contains the address of the target 110, so the pointer 101 is said to point at the target 110.
A legitimate copy of a pointer appears identical to the original pointer, except that the legitimate copy is located at a different address. Thus, the pointer 102 at address &C, which also contains &B, also points at the target 110 and represents a legitimate copy of the pointer 101.
But, the pointer 103 is an illegitimate copy of pointer 101 in that the original contents of the pointer 101 (&B) have been replaced with a new contents (&E), so that the pointer 103 now points at the duped target 115 at address &E. Although the duped target 115 may have a legitimate address for the executing code thread to access, using an illegitimate pointer to access or alter the contents at that address as if it were the target 110 at address &B may cause data corruption or integrity problems.
What is needed is a way to enhance system security to protect the computer from accessing and/or altering incorrect storage locations. Although the aforementioned problems have been described in terms of unauthorized persons attempting to defeat system security measures, the problem of incorrect storage locations may have any cause whether intentional or inadvertent. Further, destructive code may be loaded onto the computer via any mechanism not limited to interconnected computers.